In many of today's operating systems, certain computing operations involve and/or require passing data between processes running on a computing device. For example, a process may monitor status changes of another process by receiving runtime statistics generated by the other process. A process that generates data to be shared may be referred to as a producer process, and a process that receives the data may be referred to as a consumer process. Because this type of data sharing is common within many operating systems, various ways to facilitate producer-consumer relationships have been developed. As an example, a traditional data-sharing method may involve serializing data and then exporting the same from a producer process to a consumer process. In particular, this traditional data-sharing method may involve storing and/or accessing the data via system calls performed by both the producer and consumer processes.
Unfortunately, conventional data-sharing systems may be costly and/or inefficient. For example, serializing data for exportation to a consumer process may incur significant overhead for a producer process (e.g., dozens or hundreds of clock cycles). Further delay may be incurred while transferring the data to the consumer process. Moreover, a consumer process may require knowledge of the layout and/or type of data generated by a producer process in order to accurately interpret and/or utilize the data. In conventional data-sharing systems, this requirement may lead to additional communication (and therefore delays) between producer and consumer processes.
The instant disclosure, therefore, identifies and addresses a need for improved apparatuses, systems, and methods for efficiently sharing data between processes.